.TH "MP4" "3" "Version 0.9" "Cisco Systems Inc." "MP4 File Format Library"
.SH "NAME"
.LP 
\fBMP4WriteSample\fR \- Write a track sample
.SH "SYNTAX"
.LP 
#include <mp4.h>
.LP 
bool \fBMP4WriteSample\fR(
.br 
	MP4FileHandle \fIhFile\fP,
.br 
	MP4TrackId \fItrackId\fP,
.br 
	u_int8_t* \fIpBytes\fP,
.br 
	u_int32_t \fInumBytes\fP,
.br 
	MP4Duration \fIduration\fP = MP4_INVALID_DURATION,
.br 
	MP4Duration \fIrenderingOffset\fP = 0,
.br 
	bool \fIisSyncSample\fP = true
.br 
);
.SH "ARGUMENTS"
.LP 
.TP 
\fIhFile\fP
Specifies the mp4 file to which the operation applies.
.TP 
\fItrackId\fP
Specifies the track to which the operation applies.
.TP 
\fIpBytes\fP
Pointer to the sample data.
.TP 
\fInumBytes\fP
The size in bytes of the sample.
.TP 
\fIduration\fP
The duration for this sample. Caveat: The duration should be in the track timescale units.
.TP 
\fIrenderingOffset\fP
The rendering offset for this sample. Currently the only media type that needs this feature is MPEG video. Caveat: The offset should be in the track timescale units.
.TP 
\fIisSyncSample\fP
The sync/random access flag for this sample.
.SH "RETURN VALUES"
.LP 
Upon success, true (1). Upon an error, false (0).
.SH "DESCRIPTION"
.LP 
\fBMP4WriteSample\fR writes the given sample at the end of the specified track. Currently the library does not support random insertion of samples into the track timeline. Note that with mp4 there cannot be any holes or overlapping samples in the track timeline. The last three arguments give optional sample information.
.LP 
The value of duration can be given as MP4_INVALID_DURATION if all samples in the track have the same duration. This can be specified with MP4AddTrack() and related functions.
.LP 
Typically for audio none of the optional arguments are needed. MPEG audio such as MP3 or AAC has a fixed sample duration and every sample can be accessed at random. 
.LP 
For video, all of the optional arguments could be needed. MPEG video can be encoded at a variable frame rate, with only occasional random access points, and with "B frames" which cause the rendering (display) order of the video frames to differ from the storage/decoding order.
.LP 
Other media types fall between these two extremes.
.SH "SEE ALSO"
.LP 
MP4(3)
